package process

import (
	"encoding/json"
	"fmt"
	"go_code/chatroom/client/utils"
	"go_code/chatroom/common/message"
	"net"
	"os"
)

//显示登陆成功后到界面
func ShowMenu() {
	fmt.Println("------------恭喜xxx登陆成功-----------")
	fmt.Println("------------1、显示在线用户列表-----------")
	fmt.Println("------------2、发送消息-----------")
	fmt.Println("------------3、信息列表-----------")
	fmt.Println("------------4、退出系统-----------")
	fmt.Println("请选择(1-4):")
	var key int
	var content string
	fmt.Scanln(&key)

	//只创建一次实例
	smsProcess := &SmsProcess{}

	switch key {
	case 1:
		//fmt.Println("显示在线用户列表：")
		outputOnlineUser()
	case 2:
		fmt.Println("发送消息内容：")
		fmt.Scanln(&content)
		smsProcess.SendFroupMes(content)
	case 3:
		fmt.Println("信息列表：")
	case 4:
		fmt.Println("退出系统。。。")
		os.Exit(0)
	default:
		fmt.Println("你输入的选项不对。。。")
	}

}

//和服务器端保持通讯
func serverProcessMes(conn net.Conn) {
	//创建一个transfer实例，不停端读取服务器发送消息
	tf := &utils.Transfer{
		Conn: conn,
	}
	for true {
		fmt.Println("客户端正在读取服务器发送端消息")
		mes, err := tf.ReadPkg()
		if err != nil {
			fmt.Println("tf.ReadPkg() err=", err)
			return
		}
		//显示读取到的消息
		//fmt.Println(mes)
		switch mes.Type {
		case message.NotifyUserStatusMesType:
			var notifyUserStatusMes message.NotifyUserStatusMes
			json.Unmarshal([]byte(mes.Data), &notifyUserStatusMes)
			updateUserStatus(&notifyUserStatusMes)

		case message.SmsMesType:	//群发消息
			outputGroupMes(&mes)
		default:
			fmt.Println("无法处理。。。")
		}
	}
}
